<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /**
         * plugins:
         * 返回插件数组
         * 有插件名:name,
           插件介绍:description
           插件文件名:filename
        */
        console.log(window.navigator.plugins)

        // 检测插件就是遍历插件名并逐个比较
        const hasPlugins = (name) => {
            // toLowerCase()把字符串变为小写
            let names = name.toLowerCase()
            for (let plugin of window.navigator.plugins) {
                if (plugin.name.toLowerCase().indexOf(names) > -1) {
                    return true
                }
            }
            return false
        }
        // 检测flash插件
        const res = hasPlugins('Chromium') // true
        console.log(res)

        /**
         * 旧版本IE的插件检测
         * 使用ActiveXObject,
         * IE中的插件是实现COM对象的，有唯一的标识，因此要检测某个插件就必须要知道其COM标识
        */
        // 在旧版本IE中检测插件
        const hasIEPlugins = (name) => {
            try {
                // 如果对象创建成功就返回true
                // 如果创建失败说明没有此插件
                new ActiveXObject(name)
                return true
            } catch (e) {
                return false
            }
        }

        console.log(hasIEPlugins("ShockwaveFlash.ShockwaveFlash")) // false

        /**
         * 在所有浏览器中检测插件
         * 检测某一个插件写一个函数
        */
        // 检测flash插件
        const hasFlash = () => {
            let res = hasPlugins('Flash') // 尝试使用非IE方式
            if (!res) {
                res = hasIEPlugins('ShockwaveFlash.ShockwaveFlash') // 如果非IE方式不行就使用IE方式
            }
            return res
        }

    </script>
</body>

</html>